import { ref, onMounted, onUnmounted } from 'vue'

export function useCountdown(defaultSeconds = 5, onFinish) {
  // 倒计时时间的 ref
  const countdownTime = ref('')
  // 标记倒计时是否已结束
  const countdownFinished = ref(false)
  // 倒计时函数
  let intervalId: number | null = null

  const countdown = (seconds: number) => {
    intervalId = setInterval(() => {
      if (seconds > 0) {
        seconds--
        countdownTime.value = `${seconds}s` // 更新倒计时时间
      } else {
        clearInterval(intervalId)
        countdownFinished.value = true // 标记倒计时结束
        // 在这里调用 onFinish 回调函数
        if (onFinish) {
          onFinish()
        }
      }
    }, 1000)
  }

  // 开始倒计时
  const start = () => {
    countdown(defaultSeconds)
  }

  // 停止倒计时
  const stop = () => {
    if (intervalId !== null) {
      clearInterval(intervalId)
      intervalId = null
      countdownFinished.value = false // 如果需要，可以重置为未结束状态
      countdownTime.value = `${defaultSeconds}s` // 重置为初始时间
    }
  }

  // 组件挂载时启动倒计时
  onMounted(start)

  // 组件卸载时停止倒计时
  onUnmounted(stop)

  // 返回需要的响应式状态和方法
  return {
    countdownTime,
    countdownFinished,
    start,
    stop
  }
}
